//#include <iostream>
//using namespace std;
//
///**
// * Definition for singly-linked list.
// * /**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     ListNode *next;
// *     ListNode() : val(0), next(nullptr) {}
// *     ListNode(int x) : val(x), next(nullptr) {}
// *     ListNode(int x, ListNode *next) : val(x), next(next) {}
// * };
// */
//struct ListNode {
//    int val;
//    ListNode* next;
//    /*ListNode() : val(0), next(nullptr) {}
//    ListNode(int x) : val(x), next(nullptr) {}
//    ListNode(int x, ListNode* next) : val(x), next(next) {}*/
//};
//
//ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
//        ListNode* p1 = l1;
//        ListNode* p2 = l2;
//        ListNode* L = new ListNode;
//        while (p1 != NULL || p2 != NULL) {
//            if (p1 == NULL) {
//                L->next = p2;
//                p2 = p2->next;
//
//
//            }
//            else if (p2 == NULL) {
//                L->next = p1;
//                p1 = p1->next;
//            }
//            else {
//                L->val = p1->val + p2->val;
//                p1 = p1->next;
//                p2 = p2->next;
//            }
//            ListNode* L = new ListNode;
//            L->next = L;
//        }
//        return L;
//
//};
//int main() {
//    ListNode l1, l2;
//    
//	return 0;
//}